Computing and networking technologies have transformed many important aspects of everyday life. Computers have become a household staple instead of a luxury, and provide users with a tool to manage and forecast finances, control household operations like heating, cooling, lighting and security, and store records and images in a permanent and reliable medium. Networking technologies like the Internet provide users with virtually unlimited access to remote systems, information and associated applications.
Traditional business practices are evolving with computing and networking technologies. For example, a conventional banking transaction can include gathering information such as bank account number, passbook and identification, dedicating time to travel to the bank, procuring transportation, waiting in line and utilizing tellers to facilitate a banking transactions. Today, consumers can access their accounts via the Internet and perform a growing number of available transactions such as balance inquiries, funds transfers and bill payment with the click of a mouse button.
As computing and networking technologies become robust, secure and reliable, more consumers, wholesalers, retailers, entrepreneurs, educational institutions, advocacy groups and the like are shifting paradigms and employing the Internet to perform business instead of the traditional means. For example, many businesses and consumers are providing web sites and/or on-line services (e.g., for purchasing food and clothing, searching for information, sending email and playing interactive games). In another example, a stock market web site can provide the user with tools for retrieving stock quotes and purchasing stock.
Typically, a user interfaces with a client(s) application (e.g., a web page) to interact with a server(s) that stores information in a database that is accessible to the client application. Databases provide a persistent, durable store for data that can be shared across multiple users and applications. Client(s) applications generally retrieve data from the database through a query(s), which returns results containing the subset of data interesting to the application. The application then consumes, displays, transforms, stores, or acts on those results, and may submit changes based on the results retrieved.
Moreover, messaging systems are typically employed to transfer data between computers, databases and other entities. Each entity participating in message transfer (e.g., an “endpoint”) can be employed for various purposes, such as; archiving data, event notification, enabling loosely connected applications that have components on multiple endpoints, and the like.
In such systems, the message throughput and latency are limited by various resource constraints, including network connectivity, network bandwidth, processor speed, memory, and disk space. These constraints can exist in either endpoint or at other locations on the connecting network. As such, throughput and latency of the system are typically limited by the slowest component, resulting in a variable latency between the time a message is sent and the time it is received. For example, the message send rate may exceed the throughput the system is capable of and thus latency increases for some or all messages.
For example, a chain of retail stores can be connected to a central database. The central database can contains customer records, transaction records, inventory, product descriptions, and pricing. It can become necessary for a store to access a customer record or inventory while the customer is waiting at the cash register. Hence, messages related to retrieval of customer records from the central database are required to be delivered quickly. Likewise, updates to product descriptions and pricing are generally not time critical. Furthermore, such updates can be quite large and take a lot of time and resources to transfer.